package Boke2;

public class SingleLazyThread {
    //加上volatile防止发生内存可见性问题
    private static volatile SingleLazyThread singleLazyThread=null;
    public SingleLazyThread getSingleLazyThread(){
        //由于我们第一次使用时才会涉及到创建实例
        //后来就不用在创建了,所以为了避免每次使用
        //实例时都要进行加锁操作(影响效率)，我们加上一层外层if
        //判断是否为第一次使用该类
        if(singleLazyThread==null){
            //通过对singleLazyThread对象进行加锁
            //将读操作和修改操作打包为原子的
            synchronized(singleLazyThread){
                if(singleLazyThread==null){
                    singleLazyThread=new SingleLazyThread();
                }
            }

        }
       return singleLazyThread;
    }

    //防止实例化多个对象
    private SingleLazyThread(){

    }
}
